home *** CD-ROM | disk | FTP | other *** search
/ The Atari Compendium / The Atari Compendium (Toad Computers) (1994).iso / files / prgtools / programm.ing / m2posx10.zoo / m2posix.10 / src / dossyste.dpp < prev    next >
Encoding:
Modula Definition  |  1993-12-09  |  8.2 KB  |  212 lines

  1. DEFINITION MODULE DosSystem;
  2. __DEF_SWITCHES__
  3. #ifdef HM2
  4. #ifdef __LONG_WHOLE__
  5. (*$!i+: Modul muss mit $i- uebersetzt werden! *)
  6. (*$!w+: Modul muss mit $w- uebersetzt werden! *)
  7. #else
  8. (*$!i-: Modul muss mit $i+ uebersetzt werden! *)
  9. (*$!w-: Modul muss mit $w+ uebersetzt werden! *)
  10. #endif
  11. #endif
  12. (*****************************************************************************)
  13. (* 04-Dez-93, Holger Kleinschmidt                                            *)
  14. (*****************************************************************************)
  15.  
  16. FROM SYSTEM IMPORT
  17. (* TYPE *) ADDRESS;
  18.  
  19. FROM PORTAB IMPORT
  20. (* TYPE *) UNSIGNEDWORD, UNSIGNEDLONG, WORDSET;
  21.  
  22. (*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
  23.  
  24. TYPE
  25.   MachineType = (atariST, atariSTE, atariTT, atari);
  26.  
  27. TYPE
  28.   CPUType = (CPU68000, CPU68010, CPU68020, CPU68030, CPU68040, CPU68XXX);
  29.  
  30. TYPE
  31.   FPUFlags = (
  32.     sfp004,   (* SFP 004 oder kompatible FPU-Peripheriekarte *)
  33.     fpu1,     (* Bitmaske, siehe FPU* *)
  34.     fpu2,     (* -""- *)
  35.     m68040    (* 68040-Prozessor mit integrierter FPU *)
  36.   );
  37.  
  38.   FPUType = SET OF FPUFlags;
  39.  
  40. CONST
  41.   FPUMask = FPUType{fpu1,fpu2};
  42.  
  43.   FPU81or82 = FPUType{fpu1};      (* 68881 oder 68882 *)
  44.   FPU81     = FPUType{fpu2};      (* eindeutig 68881 *)
  45.   FPU82     = FPUType{fpu1,fpu2}; (* eindeutig 68882 *)
  46.  
  47. TYPE
  48.   FPUInfo = RECORD
  49.     fpu   : FPUType;
  50.     linef : UNSIGNEDWORD; (* <> 0: Line-F-Instruktionen erlaubt *)
  51.   END;
  52.  
  53.  
  54. TYPE
  55.   CmdLine = ARRAY [0..127] OF CHAR;
  56.  
  57.   BasePtr  = POINTER TO BasePage;
  58.   BasePPtr = POINTER TO BasePtr;
  59.   BasePage = RECORD
  60.     pLowtpa : ADDRESS;
  61.     pHitpa  : ADDRESS;
  62.     pTbase  : ADDRESS;
  63.     pTlen   : UNSIGNEDLONG;
  64.     pDbase  : ADDRESS;
  65.     pDlen   : UNSIGNEDLONG;
  66.     pBbase  : ADDRESS;
  67.     pBlen   : UNSIGNEDLONG;
  68.     pDta    : ADDRESS;
  69.     pParent : BasePtr;
  70.     res1    : UNSIGNEDLONG;
  71.     pEnv    : ADDRESS;
  72.     res2    : ARRAY [0..19] OF UNSIGNEDLONG;
  73.     pCmdlin : CmdLine;
  74.   END;
  75.  
  76.  
  77. TYPE
  78.   OsPtr = POINTER TO OsHeader;
  79.   OsHeader = RECORD
  80.     osEntry   : UNSIGNEDWORD;
  81.     osVersion : UNSIGNEDWORD;
  82.     reseth    : ADDRESS;
  83.     osBeg     : OsPtr;
  84.     osEnd     : ADDRESS;
  85.     osRsv1    : UNSIGNEDLONG;
  86.     osMagic   : ADDRESS;
  87.     osDate    : UNSIGNEDLONG;
  88.     osConf    : WORDSET;
  89.     osDosdate : WORDSET;
  90.  (* die folgenden Variablen ab TOS 1.02 *)
  91.     pRoot     : ADDRESS;
  92.     pkbshift  : ADDRESS;
  93.     pRun      : BasePPtr;
  94.     pRsv2     : ADDRESS;
  95.   END;
  96.  
  97. TYPE
  98.   Shell = (None, Mupfel, Gemini, Gulam, Master, Unknown);
  99.  
  100.  
  101. VAR
  102.   BASEP : BasePtr; (* Zeiger auf die eigene Basepage *)
  103.  
  104. (*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
  105.  
  106.  PROCEDURE GetOsHeader ((* -- /AUS *) VAR osp : ADDRESS );
  107.  
  108. (*--------------------------------------------------------------------------
  109.  | Liefert einen Zeiger auf die OSHEADER-Systemstruktur                     |
  110.   --------------------------------------------------------------------------*)
  111.  
  112.  PROCEDURE DosVersion ( ): CARDINAL;
  113.  
  114. (*--------------------------------------------------------------------------
  115.  | Liefert die kodierte DOS-Version                                         |
  116.   --------------------------------------------------------------------------*)
  117.  
  118.  PROCEDURE SysClock ( ): UNSIGNEDLONG;
  119.  
  120. (*--------------------------------------------------------------------------
  121.  | Liefert zurueck, wie oft die Systemvariable '_hz_200' seit Programmstart |
  122.  | erhoeht wurde.                                                           |
  123.   --------------------------------------------------------------------------*)
  124.  
  125.  PROCEDURE ShellInstalled ( ): Shell;
  126.  
  127. (*--------------------------------------------------------------------------
  128.  | Versucht festzustellen, ob ueber die Systemvariable '_shell_p' eine      |
  129.  | Kommandoshell installiert ist.                                           |
  130.   --------------------------------------------------------------------------*)
  131.  
  132.  PROCEDURE CallShell ((* EIN/ -- *) VAR cmd : ARRAY OF CHAR ): INTEGER;
  133.  
  134. (*--------------------------------------------------------------------------
  135.  | Versucht ein Shell-Kommando ueber die Systemvariable '_shell_p' abzu-    |
  136.  | setzen. Vorher wird mit "ShellInstalled()" ueberprueft, ob eine Shell    |
  137.  | installiert ist; wenn allerdings nach einem Reset oder nach Beendigung   |
  138.  | einer Shell (-> Gulam) diese Variable nicht wieder auf Null gesetzt wird,|
  139.  | gibts mit ziemlicher Sicherheit einen Systemabsturz!                     |
  140.  | Als Funktionswert wird -1 zurueckgeliefert, falls keine Shell installiert|
  141.  | ist, ansonsten der Rueckgabewert der Shell.                              |
  142.   --------------------------------------------------------------------------*)
  143.  
  144.  PROCEDURE ProcessDomain ((* EIN/ -- *) dom : INTEGER ): INTEGER;
  145.  
  146. (*--------------------------------------------------------------------------
  147.  | Beeinflusst das Verhalten bestimmter Systemaufrufe.                      |
  148.  | <dom> < 0: Keine Aenderung                                               |
  149.  | <dom> = 0: TOS-Domain                                                    |
  150.  | <dom> = 1: MiNT-Domain                                                   |
  151.  |                                                                          |
  152.  | Der alte ``Domain''-Wert wird zurueckgeliefert. Die Funktion hat nur     |
  153.  | unter MiNT eine Auswirkung.                                              |
  154.  | Ist MiNT bei Programmstart aktiv, wird automatisch MiNT-Domain voreinge- |
  155.  | stellt.                                                                  |
  156.   --------------------------------------------------------------------------*)
  157.  
  158.  PROCEDURE DosPid ((* EIN/ -- *) bp : ADDRESS ): INTEGER;
  159.  
  160. (*--------------------------------------------------------------------------
  161.  | Berechnet aus der Adresse der Basepage eine (hoffentlich) eindeutige     |
  162.  | Prozesskennung.                                                          |
  163.   --------------------------------------------------------------------------*)
  164.  
  165.  PROCEDURE GetCookie ((* EIN/ -- *)     cookie : UNSIGNEDLONG;
  166.                       (* -- /AUS *) VAR value  : UNSIGNEDLONG ): BOOLEAN;
  167.  
  168. (*--------------------------------------------------------------------------
  169.  | Der Cookie mit der ID <cookie> wird gesucht. Ist der Cookie nicht vor-   |
  170.  | handen oder kein Cookie Jar installiert, ist der Funktionswert FALSE,    |
  171.  | und <value> ist Null;sonst wird in <value> der Wert des Cookies geliefert|
  172.   --------------------------------------------------------------------------*)
  173.  
  174.  
  175.  (* Die folgenden Funktionen liefern ihren Wert anhand eines Cookiejar-
  176.   * Eintrags, der aber nur beim Programmstart untersucht wird, da davon
  177.   * ausgegangen wird, das sich der Wert dieser Cookies waehrend des
  178.   * Programmlaufs nicht aendert.
  179.   *)
  180.  
  181.  PROCEDURE Machine ( ): MachineType;
  182.  
  183. (*--------------------------------------------------------------------------
  184.  | Versucht den Typ des Rechners durch den '_MCH'-Cookie festzustellen.     |
  185.   --------------------------------------------------------------------------*)
  186.  
  187.  PROCEDURE CPU ( ): CPUType;
  188.  
  189. (*--------------------------------------------------------------------------
  190.  | Versucht den Typ der CPU durch den '_CPU'-Cookie festzustellen.          |
  191.   --------------------------------------------------------------------------*)
  192.  
  193.  PROCEDURE FPU ((* -- /AUS *) VAR info : FPUInfo );
  194.  
  195. (*--------------------------------------------------------------------------
  196.  | Versucht den Typ der FPU durch den '_FPU'-Cookie festzustellen.          |
  197.   --------------------------------------------------------------------------*)
  198.  
  199.  PROCEDURE MiNTVersion ( ): CARDINAL;
  200.  
  201. (*--------------------------------------------------------------------------
  202.  | Liefert die kodierte MiNT-Version (= 0, falls MiNT nicht aktiv).         |
  203.   --------------------------------------------------------------------------*)
  204.  
  205.  PROCEDURE FileLocking ( ): BOOLEAN;
  206.  
  207. (*--------------------------------------------------------------------------
  208.  | Testet, ob das Betriebssystem ``File locking'' unterstuetzt.             |
  209.   --------------------------------------------------------------------------*)
  210.  
  211. END DosSystem.
  212.